package com.shop.trade.api.service;

import com.shop.common.model.PayCallMdel;
import com.shop.common.model.ServiceBean;
import com.shop.common.model.param.trade.OrderPayInput;
import com.shop.common.model.result.trade.OrderBaseOutput;
import com.shop.common.model.result.trade.OrderPayOutput;
import com.shop.trade.api.model.StatisModel;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Description:
 *
 * @author zhoulk
 * @date: 2019年04月05日  18:45
 */

public interface IPaySvc {

    /**
     * @Function com.shop.trade.api.service.IPaySvc.addPayOrder
     * @Description //TODO 新增支付单
     *
     * @param: orderPayInput
     * @return com.shop.common.model.ServiceBean<java.lang.Integer>
     * @errorCode //TODO
     *
     * @Author zhoulk
     * @Date 2019/4/5 18:52
     *
     **/
    ServiceBean<Integer> addPayOrder(OrderPayInput orderPayInput);

    /**
     * @Function com.shop.trade.api.service.IPaySvc.qryPayOrder
     * @Description //TODO 查询支付单信息
     *
     * @param: orderPayInput
     * @return com.shop.common.model.ServiceBean<com.shop.common.model.result.trade.OrderPayOutput>
     * @errorCode //TODO
     *
     * @Author zhoulk
     * @Date 2019/4/5 18:52
     *
     **/
    ServiceBean<OrderPayOutput> qryPayOrder(OrderPayInput orderPayInput);

    /**
     * @Function com.shop.trade.api.service.IPaySvc.modPayOrder
     * @Description //TODO 修改支付单信息
     *
     * @param: orderPayInput
     * @return com.shop.common.model.ServiceBean<java.lang.Integer>
     * @errorCode //TODO
     *
     * @Author zhoulk
     * @Date 2019/4/5 18:52
     *
     **/
    ServiceBean<Integer> modPayOrder(OrderPayInput orderPayInput);

    /**
     * @Function com.shop.trade.api.service.IPaySvc.delPayOrder
     * @Description //TODO 删除支付单信息
     *
     * @param: ids
     * @return com.shop.common.model.ServiceBean<java.lang.Integer>
     * @errorCode //TODO
     *
     * @Author zhoulk
     * @Date 2019/4/5 18:53
     *
     **/
    ServiceBean<Integer> delPayOrder(List<Integer> ids);


    /**
     * @Function com.shop.trade.api.service.IPaySvc.qryPayOrders
     * @Description //TODO 分页查询支付单列表
     *
     * @param: orderPayInput
     * @return com.shop.common.model.ServiceBean<java.util.List < com.shop.common.model.result.trade.OrderPayOutput>>
     * @errorCode //TODO
     *
     * @Author zhoulk
     * @Date 2019/4/5 18:53
     *
     **/
    ServiceBean<List<OrderPayOutput>> qryPayOrders4P(OrderPayInput inputBean);

    ServiceBean<Map<String, BigDecimal>> qryStatis(OrderPayInput input);

    List<StatisModel> qryStatisList(StatisModel statisModel);

    ServiceBean<String> payValidate(Integer orderId, Boolean isBalance);

    ServiceBean<OrderBaseOutput> payResultValidate(PayCallMdel payCallMdel, Integer userId);

    ServiceBean<OrderBaseOutput> payResultValidate2(PayCallMdel payCallMdel, Integer userId);
}
